Lab 13 - Deep Reinforcement Learning 2

Lab. 13 - Deep Reinforcement Learning cz. 2

Frozen Lake

UWAGA: na dzisiejszych zajęciach proszę pracować na komputerze wyposażonym w GPU (np na komputerach w laboratorium).

1. Cel zajęć

Celem zajęć jest poznanie podstaw wykorzystania metod głębokiego uczenia ze wzmocnieniem w ROS2.

2. Przygotowanie środowiska

Na dzisiejszych zajęciach będziemy korzystali z paczki turtlebot3_drlnav.

Należy sklonować paczkę i zbudować kontener:

git clone https://github.com/tomasvr/turtlebot3_drlnav.git
cd turtlebot3_drlnav
docker build -t turtlebot3_drlnav .

Tworzenie kontenera chwilę zajmie. Można ten czas wykorzystać na sprawdzenie, czy wszystkie wykonane zadania domowe są przesłane ;)

Po zbudowaniu kontenera należy nadać dockerowi uprawnienia do wywoływania GUI:

xhost +local:docker

a następnie uruchomić kontener (/PATH/TO/REPO należy podmienić na ścieżkę na komputerze, gdzie zostało sklonowane repozytorium):

docker run -it --gpus all --privileged   --env NVIDIA_VISIBLE_DEVICES=all   --env NVIDIA_DRIVER_CAPABILITIES=all  --env DISPLAY=${DISPLAY}  --env QT_X11_NO_MITSHM=1  --volume /tmp/.X11-unix:/tmp/.X11-unix -v /PATH/TO/REPO/turtlebot3_drlnav:/home/turtlebot3_drlnav   --network host turtlebot3_drlnav

Po uruchomieniu kontenera można zbudować paczki:

colcon build
source install/setup.bash

ROS_DOMAIN_ID

W przypadku pracy na komputerze w laboratorium może okazać się konieczne ustawienie ROS_DOMAIN_ID. Domyślnie, ROS2 rozgłasza wszystko innym komputerom w sieci z tym samym ROS_DOMAIN_ID. Wartość tej zmiennej można ustawić korzystając z:

export ROS_DOMAIN_ID = <wybrana_wartość>

Proszę wybrać losową wartość.

Wygodne może być dodanie tego exportu do bashrc:

echo 'export ROS_DOMAIN_ID=<wybrana_wartość>' >> ~/.bashrc 

3. Uruchomienie przykładu

Należy rozpocząć od uruchomienia symulacji. Uruchomiony zostanie stage9, ponieważ dla niego jest utworzony przykład, ale są dostępne stage od 1 do 10:

ros2 launch turtlebot3_gazebo turtlebot3_drl_stage9.launch.py

W drugim terminalu należy uruchomić manager goal’i:

ros2 run turtlebot3_drl gazebo_goals

W trzecim manager środowiska:

ros2 run turtlebot3_drl environment

I w ostatnim, czwartym, terminalu należy uruchomić agenta:

ros2 run turtlebot3_drl test_agent ddpg 'examples/ddpg_0_stage9' 8000

Robot powinien podążać do miejsca, gdzie znajduje się cel (czerwone koło).

4. Trening sieci

Trening można rozpocząć na dowolnym stage’u. Od uruchomienia przykładu różni się jedynie ostatnim poleceniem:

ros2 run turtlebot3_drl train_agent [rodzaj_sieci]

Zamiast [rodzaj_sieci] należy podać jeden z poniższych: - ddpg - td3 - dqn

Dodatkowe ustawienia można znaleźć w pliku settings.py.

Materiały dodatkowe


Autor: Kamil Młodzikowski
W oparciu o: link.